Computer systems provide various systems for storing and accessing data. In particular, it is often important that such systems provide an ability to search through large numbers of individual data records so as to locate a particular record or group of records having a pre-defined characteristic. Moreover, it is often desirable that such searches may be performed, and results obtained, as quickly as possible.
For example, in a customer database having millions of records, where each record corresponds to an individual customer, it may be important to locate customer(s) that are in a certain age group, or that live in a particular area. Similarly, it may be important to locate a record of a particular customer, when only limited information about that customer is available.
Further, it is often the case that such searches involve compound queries, such as Boolean queries. For example, when searching the customer database mentioned above, it may be necessary to perform a search for customers having the last name Smith AND living in the city Heidelburg.
In such cases, even if a system is designed to perform relatively fast searches for queries having single conditions, it may be the case that the system is inefficient or incapable of performing a database search based on a logical combination of multiple conditions. Moreover, even if the system is capable of performing such logical combinations, it may be the case that the system fails to perform sufficiently quickly to satisfy a level of demand of users of the database system.